1. Technical Field
The present application relates generally to an improved data processing system and method. More specifically, the present application is directed to a system and method for multicore communication processing.
2. Description of Related Art
With modern computing systems, in which high speed networking is becoming a requirement, multiple processing cores, i.e. processors, typically reside within a single system. Although multiple processing cores may be provided, typically the processing of data packets in such high speed networking is limited to single processor cores handling the receive-side and send-side operations.
Regarding the receive-side processing of high speed networking mechanisms, a single processor or core typically performs receive interrupt handling. With regard to send-side processing, known systems typically serialize, on a single processor or core, the transmit portion of the send-side processing in a network device driver. A plurality of processors may be trying to send data on a plurality of connections, but these operations will be serialized once in the device driver.
Using a single core to handle communication processing results in a communication bottleneck. As the speed of communications increase, e.g., at 10 Gbps, the processing overhead of the communication stack, e.g., the TCP/IP stack, makes using a single processing core to handle the communication processing impossible. That is, a single processing core cannot sustain the media speed bandwidth, i.e. to utilize the full communication link capacity.
One solution proffered by Microsoft Corporation is referred to as Receive-Side Scaling (RSS) and is described, for example, in “Scalable Networking: Eliminating the Receive Processing Bottleneck-Introducing RSS,” WinHEC 2004 Version, Apr. 14, 2004. The RSS solution involves using a hash function and indirection table to distribute data packets across a plurality of processors for processing. A hash is generated based on the received data packet and the least significant bits of the resulting hash value are used to index into an indirection table. The indirection table stores entries for directing the data packet to one of a plurality of processors. The data packet is then processed by the selected processor.
The RSS solution helps to distribute receive-side processing of communication packets. However, RSS does not provide any mechanisms for enhancing the send-side processing of communication packets. To the contrary, RSS relies entirely on the passive effects of increasing the receive-side processing throughput to permit send-side processing speed to increase.